﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Incident_Manager_PUCP
{
    public class GestorTecnico
    {
         //Giomar Ruiz Tinco: Implementación del Patron Solitario o Singleton para el Mantenimiento de Tecnicos.
      
        //Utilizacion de arreglos para guardar en memoria los datos sin utilizar persistencia de Objetos.

        private static GestorTecnico pinstancia = null;
        public List<Tecnico> ListaTecnicos = new List<Tecnico>();
  

        public static GestorTecnico ObtenerInstancia()
        {
            if (pinstancia == null)
            {
                pinstancia = new GestorTecnico();
                Console.WriteLine("Se creo instancia");
            }
            else Console.WriteLine("No se creo instancia");
            return pinstancia;
        }
        
        protected GestorTecnico()
        {
            //ListaTecnico.Capacity = 200;
        }

        public void RegistrarTecnico(Tecnico tecnico)
        {
            Console.Write("tecnico con codigo: " + tecnico.getcodigo());
            ListaTecnicos.Add(tecnico);
            
        }

        public void EliminarTecnico(string codigo)
        {
            List<Tecnico> listaTemp = new List<Tecnico>();

            for (int i = 0; i < ListaTecnicos.Count(); i++)
            {
                if (codigo.CompareTo(ListaTecnicos[i].getcodigo())==0)
                {
                    //seteo en blanco todos los atributos para poder quitarlo
                    ListaTecnicos[i].setcodigo("");
                    ListaTecnicos[i].setapellidoPaterno("");
                    ListaTecnicos[i].setapellidoMaterno("");
                    ListaTecnicos[i].setnombres("");
                    ListaTecnicos[i].setcargo("");
                    ListaTecnicos[i].setcorreo("");
                    ListaTecnicos[i].setcontraseña("");
                }

            }

            for (int i = 0; i < ListaTecnicos.Count(); i++)
            {
                if (ListaTecnicos[i].getcodigo().CompareTo("") != 0)
                {
                    //si no es vacio, lo copio a la lista temporal
                    listaTemp.Add(ListaTecnicos[i]);
                }
            }

            
            //limpio la lista anterior, ahora agregare la instancia de la lista temporal sin vacios...
            ListaTecnicos.Clear();

            ListaTecnicos = listaTemp;

        
        }

        public void ModificarTecnico(string codigo, string apellidoPaterno, string apellidoMaterno, string nombres, string cargo, string correo, string contraseña)
        {

            for (int i = 0; i < ListaTecnicos.Count(); i++)
            {
                if (codigo.CompareTo(ListaTecnicos[i].getcodigo()) == 0)
                {
                    ListaTecnicos[i].setapellidoPaterno(apellidoPaterno);
                    ListaTecnicos[i].setapellidoMaterno(apellidoMaterno);
                    ListaTecnicos[i].setnombres(nombres);
                    ListaTecnicos[i].setcargo(cargo);
                    ListaTecnicos[i].setcorreo(correo);
                    ListaTecnicos[i].setcontraseña(contraseña);

                }
            }

        }

        public List<Tecnico> BuscarTecnicos(string codigo)
        {
            List<Tecnico> tecnicos = new List<Tecnico>();

            for (int i = 0; i < ListaTecnicos.Count(); i++)
            {
                if (codigo.CompareTo(ListaTecnicos[i].getcodigo()) == 0)
                {
                    tecnicos.Add(ListaTecnicos[i]);
                
                }
            }

            return tecnicos;
        
        }
    }
}
